const cookieparser = process.server ? require("cookieparser") : undefined

// 防止数据冲突将state定义为一个函数
export const state = () =>{
  return {

    // 当前用户的登陆状态
    user: null
  }
}

export const mutations = {
  setUser(state, data){
    state.user = data
  }
}

export const actions = {

  // nuxtServerInit 特殊的action方法
  // 这个action 会在服务端渲染期间自动调用，在服务端渲染期间运行
  nuxtServerInit({commit},{req}){
    let user = null;

    // 如果请求头中有cookie
    if(req && req.headers.cookie){
      
      // 使用cookieparser 把 cookie字符串转为js对象
      const parsed = cookieparser.parse(req.headers.cookie)
      try{
        user = JSON.parse(parsed.user)
      }catch(err){

      }
    }
    commit("setUser", user)
  }
}